package org.asiainfo.gateway.service;

import org.asiainfo.common.core.domain.R;
import org.asiainfo.gateway.form.CaptchaTrackBody;
import org.springframework.web.reactive.function.server.ServerRequest;

/**
 * 验证码处理
 *
 * @author dotor-ww
 */
public interface IValidateCodeService {

    /**
     * 获取验证码状态
     *
     * @param serverRequest 请求
     * @return 结果
     */
    R<Object> getCaptchaStatus(ServerRequest serverRequest);

    /**
     * 生成验证码
     *
     * @param serverRequest 请求
     * @return 结果 Object 为了更好封装
     */
    R<Object> createCaptcha(ServerRequest serverRequest);

    /**
     * 校验验证码
     *
     * @return 结果
     */
    R<Object> checkCaptcha(ServerRequest request, CaptchaTrackBody body);

    /**
     * 生成验证码接口限流
     *
     * @param request 请求
     */
    void validateGet(ServerRequest request);

    /**
     * 校验验证码接口限流
     *
     * @param request 请求
     */
    void validateCheck(ServerRequest request);
}
